"""
功能描述、；拿到测试数据，根据接口的请求方式判断进行请求，断言请求的结果
  1-导包unittest，requests，os
    2-调用readExcel模块中的read方法，获取测试数据
    3-取出测试数据中的一条测试用例，进行请求
        3.1-准备接口请求的参数
            header，cookie，parameter……
        3.2-根据接口的请求方式进行判断
            get--requests.get
            post--requests.post
        3.3-断言接口的返回结果
            1-实际结果--接口的响应中
            2-预期结果--expect
            3-比对：self.assertEqual
    4-将实际结果real和用例状态status写入excel


"""
import unittest
import requests as requests
from ddt import ddt,data,unpack
from 高级版接口第一周.common.confighttp import confighttp
from 高级版接口第一周.common.writeexcel import writeexcel
from 高级版接口第一周.common.presolve import PreSolve
from 高级版接口第一周.common.log import logger
from 高级版接口第一周.common.readexcel import readexce

re=readexce()
testdata=re.read()
we=writeexcel()

@ddt
class Testcase(unittest.TestCase):
    @data(*testdata)
    @unpack
    def test_run(self,id, interfaceUrl, name, method, value, header, rely, caseid, expect, real, status):
        logger.debug('%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s' % (
            id, interfaceUrl, name, method, value, header, rely, caseid, expect, real, status))
        ps =PreSolve(*testdata)
        header,value=ps.presolve(id)
        ch=confighttp(interfaceUrl, method, value, header)
        re =ch.run()
        logger.info(f'当前用例的返回结果为：{re.text}')
        real =re.json('errorCode')
        if int(real)==int(expect):
            status='success'
        else:
            status='fail'
        we.wrie(int(id),real,status)
        self.assertEqual(real,int(expect),'预期与实际不符，用例执行失败，请检查！')

    if __name__ == '__main__':
        unittest.main(verbosity=2)
